package in.rob.client.dialog;
import in.lib.Constants;
import in.lib.adapter.AccountAdapter;
import in.lib.annotation.InjectView;
import in.lib.annotation.OnClick;
import in.lib.utils.Views;
import in.model.Post;
import in.model.SimpleUser;
import in.rob.client.ProfileActivity;
import in.rob.client.R;
import in.rob.client.ThreadActivity;
import in.rob.client.base.RobinDialogActivity;
import in.rob.client.dialog.base.DialogBuilder;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
public class PostDetailsDialog extends RobinDialogActivity implements OnClickListener, OnLongClickListener
{
private Post mPost;
@OnClick @InjectView(R.id.cancel) public View mCancel;
@OnClick @InjectView(R.id.user_container) public View mUserContainer;
@OnClick @InjectView(R.id.client_container) public View mClientContainer;
@OnClick @InjectView(R.id.link_container) public View mLinkContainer;
@OnClick @InjectView(R.id.repost_container) public View mRepostContainer;
@OnClick @InjectView(R.id.stars_container) public View mStarsContainer;
@OnClick @InjectView(R.id.replies_container) public View mRepliesContainer;
@InjectView(R.id.posted_by_text) public TextView mPostedBy;
@InjectView(R.id.stars_text) public TextView mStarsText;
@InjectView(R.id.reposts_text) public TextView mRepostsText;
@InjectView(R.id.replies_text) public TextView mRepliesText;
@InjectView(R.id.link_text) public TextView mLinkText;
@InjectView(R.id.client_text) public TextView mClientText;
@InjectView(R.id.timezone_text) public TextView mTimezoneText;
@InjectView(R.id.date_text) public TextView mDateText;
@Override protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.more_post_view);
Views.inject(this);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.dialog_bg));
mPost = (Post)getIntent().getExtras().getParcelable(Constants.EXTRA_POST);
if (mPost == null) finish();
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(this);
DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(this);
findViewById(R.id.link_container).setOnLongClickListener(this);
mPostedBy.setText("@" + mPost.getPoster().getMentionName() + " (" + mPost.getPoster().getUserName() + ")");
mStarsText.setText("" + mPost.getStarCount());
mRepostsText.setText("" + mPost.getRepostCount());
mRepliesText.setText("" + mPost.getReplyCount());
mTimezoneText.setText(mPost.getTimeZone());
mClientText.setText(mPost.getClientName());
mLinkText.setText(mPost.getCanonicalUrl());
mDateText.setText(dateFormat.format(new Date(mPost.getDate())) + " " + timeFormat.format(new Date(mPost.getDate())));
}
@Override public void onClick(View v)
{
if (v.getId() == R.id.cancel)
{
finish();
}
else if (v.getId() == R.id.user_container)
{
// open profile
Intent intent = new Intent(this, ProfileActivity.class);
intent.putExtra(Constants.EXTRA_USER, mPost.getPoster());
startActivityForResult(intent, Constants.REQUEST_PROFILE);
}
else if (v.getId() == R.id.client_container)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mPost.getClientLink()));
startActivity(intent);
}
else if (v.getId() == R.id.link_container)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mPost.getCanonicalUrl()));
startActivity(intent);
}
else if (v.getId() == R.id.repost_container)
{
if (mPost.getRepostCount() > 0)
{
showReposters();
}
}
else if (v.getId() == R.id.stars_container)
{
if (mPost.getStarCount() > 0)
{
showStarredBy();
}
}
else if (v.getId() == R.id.replies_container)
{
Intent in = new Intent(this, ThreadActivity.class);
in.putExtra(Constants.EXTRA_POST, mPost);
startActivity(in);
}
}
@Override public boolean onLongClick(View v)
{
if (v.getId() == R.id.link_container)
{
DialogBuilder.create(getContext())
.setTitle(getString(R.string.pick_option))
.setItems(new CharSequence[]{getString(R.string.open_url), getString(R.string.copy_url), getString(R.string.share_url)}, new DialogInterface.OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
if (which == 0)
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(mPost.getCanonicalUrl()));
startActivity(intent);
}
else if (which == 1)
{
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB)
{
android.text.ClipboardManager clipboard = (android.text.ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(mPost.getCanonicalUrl());
}
else
{
android.content.ClipboardManager clipboard = (android.content.ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", mPost.getCanonicalUrl());
clipboard.setPrimaryClip(clip);
}
Toast.makeText(getContext(), getString(R.string.copy_url_success), Toast.LENGTH_SHORT).show();
}
else if (which == 2)
{
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, mPost.getCanonicalUrl());
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent, getString(R.string.share_via)));
}
}
})
.show();
return true;
}
return false;
}
public void showReposters()
{
final ArrayList<SimpleUser> loadedUsers = new ArrayList<SimpleUser>();
for (SimpleUser u : mPost.getReposters())
{
if (u != null)
{
loadedUsers.add(u);
}
}
DialogBuilder.create(getContext())
.setTitle(R.string.reposted_by)
.setAdapter(new AccountAdapter(getContext(), R.layout.user_dialog_list_item, loadedUsers), new DialogInterface.OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
profileIntent.putExtra(Constants.EXTRA_USER, loadedUsers.get(which));
getContext().startActivity(profileIntent);
dialog.dismiss();
}
})
.setNegativeButton(R.string.close, null)
.show();
}
public void showStarredBy()
{
final ArrayList<SimpleUser> loadedUsers = new ArrayList<SimpleUser>();
for (SimpleUser u : mPost.getStarrers())
{
if (u != null)
{
loadedUsers.add(u);
}
}
DialogBuilder.create(getContext())
.setTitle(R.string.starred_by)
.setAdapter(new AccountAdapter(getContext(), R.layout.user_dialog_list_item, loadedUsers), new DialogInterface.OnClickListener()
{
@Override public void onClick(DialogInterface dialog, int which)
{
Intent profileIntent = new Intent(getContext(), ProfileActivity.class);
profileIntent.putExtra(Constants.EXTRA_USER, loadedUsers.get(which));
getContext().startActivity(profileIntent);
dialog.dismiss();
}
})
.setNegativeButton(R.string.close, null)
.show();
}
}